//
//  MessageCompile.h
//  Server
//
//  Created by jyh on 2018/7/25.
//  Copyright © 2018年 huig. All rights reserved.
//

#import <Foundation/Foundation.h>
@class MessageModel;

/**
 包装格式

 - packageTypeString: string类型
 - packageTypeText: TextMessage类型
 - packageTypeGift: GiftMessage类型
 */
typedef NS_ENUM(NSInteger,packageType) {
    packageTypeString,
    packageTypeText,
    packageTypeGift,
};

/**
 要发送的信息类型

 - messageTypeHeart: 心跳包
 - messageTypeSystem: 系统信息
 - messageTypeJoinRoom: 进入房间
 - messageTypeLeaveRoom: 离开房间
 - messageTypeChat: 群聊文本信息
 - messageTypeReceiver: 定向文本信息
 - messageTypeGift: 礼物信息
 */
typedef NS_ENUM(NSInteger,messageType) {
    messageTypeHeart,
    messageTypeSystem,
    messageTypeJoinRoom,
    messageTypeLeaveRoom,
    messageTypeChat,
    messageTypeReceiver,
    messageTypeGift,
};

@interface MessageCompile : NSObject

/**
 包装一条信息

 @param object 信息对象
 @param messageType 类型
 @param packageType 类型
 @return 返回data
 */
+ (NSData *)packageMessage:(id)object messageType:(messageType)messageType packageType:(packageType)packageType;

/**
 解析信息data

 @param data 传入信息data
 @return 返回信息NSDictionary
 */
+ (MessageModel *)parsingWithData:(NSData *)data;
/**
 根据类型获取对应的类
 
 @param type 类型
 @return class
 */
+ (id)getClass:(messageType)type;

/**
 类型映射表
 
 @return dict
 */
+ (NSDictionary *)getClassNameDic;
@end
